
const radio_arr = [
	0.01,
	0.02,
	0.03,
	0.04,
	0.05,
	0.06,
	0.07,
	0.08,
	0.09,
	0.10,
	0.11,
	0.12,
	0.13,
	0.14,
	0.15,
	0.16,
	0.17,
	0.18,
	0.19,
	0.20,
	0.21,
	0.22,
	0.23,
	0.24,
	0.25,
	0.26,
	0.27,
	0.28,
	0.29,
	0.30,
	0.31,
	0.32,
	0.33,
	0.34,
	0.35,
	0.36,
	0.37,
	0.38,
	0.39,
	0.40,
	0.41,
	0.42,
	0.43,
	0.44,
	0.45,
	0.46,
	0.47,
	0.48,
	0.49,
	0.50,
	0.51,
	0.52,
	0.53,
	0.54,
	0.55,
	0.56,
	0.57,
	0.58,
	0.59,
	0.60,
	0.61,
	0.62,
	0.63,
	0.64,
	0.65,
	0.66,
	0.67,
	0.68,
	0.69,
	0.70,
	0.71,
	0.72,
	0.73,
	0.74,
	0.75,
	0.76,
	0.77,
	0.78,
	0.79,
	0.80,
	0.81,
	0.82,
	0.83,
	0.84,
	0.85,
	0.86,
	0.87,
	0.88,
	0.89,
	0.90,
	0.91,
	0.92,
	0.93,
	0.94,
	0.95,
	0.96,
	0.97,
	0.98,
	0.99,
	1
];
export default function linearGradient(value, start = '#FF0000', end = '#00FF00') {
	const colorMap = []
	for (let i in radio_arr) {
		if (radio_arr[i] > value) {
			colorMap.push([radio_arr[i], 'rgba(0,0,0,0)'])
		} else {
			colorMap.push([radio_arr[i], getColorBetweenTwoColors(start, end, radio_arr[i])])
		}
	}
	return [[0, 'rgba(0,0,0,0)'], ...colorMap]
}

//计算线性渐变的中间颜色值
function getColorBetweenTwoColors(colorA_str, colorB_str, ratio) {
	const colorA = hexToRgb(colorA_str);
	const colorB = hexToRgb(colorB_str);
	const r = Math.round((colorB[0] - colorA[0]) * ratio + colorA[0]);
	const g = Math.round((colorB[1] - colorA[1]) * ratio + colorA[1]);
	const b = Math.round((colorB[2] - colorA[2]) * ratio + colorA[2]);
	return `rgb(${r},${g},${b})`
}


// RGB转16进制色值
function rgbToHex(red, green, blue) {
	const toHex = (colorValue) => {
		const hex = colorValue.toString(16);
		return hex.length == 1 ? "0" + hex : hex;
	};
	return "#" + toHex(red) + toHex(green) + toHex(blue);
}

// 16进制色值转RGB
function hexToRgb(hex) {
	hex = hex.replace(/^\s*#|\s*$/g, "");
	let red = parseInt(hex.substr(0, 2), 16);
	let green = parseInt(hex.substr(2, 2), 16);
	let blue = parseInt(hex.substr(4, 2), 16);
	
	return [red, green, blue];
}
